﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using BLL;
using DevComponents.DotNetBar;

namespace GUI
{
    public partial class frmMonHoc : DevComponents.DotNetBar.Office2007Form
    {
        DataSet _ds = new DataSet();
        BOMonHoc _monHoc = new BOMonHoc();
        private BOKy _ky;
        private BOLog _log;
        public frmMonHoc()
        {
            InitializeComponent();
            dgvMonHoc.ReadOnly = true;
            descSizeHeight();
        }
        #region "Tăng giảm kích thước"
        //Tăng Kích Thước Chiều Cao
        public void incSizeHeight()
        {
            int y = Size.Height;
            for (int i = 0; i < 20; i++)
            {
                try
                {
                    Thread.Sleep(5);
                    Size = new Size(Size.Width, y + i * 8);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.ToString());
                }
            }
            CenterToScreen();
        }

        //Giảm Kích Thước Chiều Cao
        public void descSizeHeight()
        {
            int y = Size.Height;
            for (int i = 0; i < 20; i++)
            {
                try
                {
                    Thread.Sleep(5);
                    this.Size = new Size(Size.Width, y - i * 8);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.ToString());
                }
            }
            CenterToScreen();
        }
        #endregion

        private void frmMonHoc_Load(object sender, EventArgs e)
        {
            _monHoc = new BOMonHoc();
            _ds = _monHoc.Binding();
            dgvMonHoc.DataSource = _ds.Tables[0];
            dgvMonHoc.Columns[0].Width = 228;
            dgvMonHoc.Columns[1].Width = 70;
            dgvMonHoc.Columns[2].Width = 70;
            txtTenMonHoc.Enabled = false;
            dgvMonHoc.Columns[0].HeaderText = "Tên Môn Học";
            dgvMonHoc.Columns[1].HeaderText = "Số Trình";
            dgvMonHoc.Columns[2].HeaderText = "Kỳ";

            _ky = new BOKy();
            _ds = _ky.Binding();
            cbxKy.DataSource = _ds.Tables[0];
            cbxKy.DisplayMember = "TenKy";
            cbxKy.ValueMember = "Ky";
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            Dispose();
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            incSizeHeight();
            txtTenMonHoc.Enabled = true;
            txtTenMonHoc.Focus();
            btnThem.Enabled = false;
            btnThoat.Enabled = false;
            btnXoa.Enabled = false;
            btnUpdate.Enabled = false;
            btnOk.Enabled = false;
            btnSua.Enabled = false;
            txtTenMonHoc.Text = "";
            nudTrinh.Value = 2;
            dgvMonHoc.Enabled = false;
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            string tenMonHoc = dgvMonHoc.CurrentRow.Cells[0].Value.ToString();
            DialogResult dr;
            dr = MessageBoxEx.Show("Bạn có thật sự muốn xóa ?", "Delete Confirm", MessageBoxButtons.YesNo,
                                   MessageBoxIcon.Question);
            if(dr == DialogResult.Yes)
            {
                _monHoc = new BOMonHoc();
                frmLyDo formLyDo = new frmLyDo();
                formLyDo.ShowDialog(this);
                string reason = formLyDo.LyDo;
                if (!reason.Equals(""))
                {
                    _log = new BOLog();
                    _log.AddLog(Session.member.TenThanhVien, " thêm mới môn " + tenMonHoc, DateTime.Now, reason);
                    int result = _monHoc.Delete(tenMonHoc);
                    MessageBoxEx.Show(result > 0 ? "Xóa môn học thành công !!!" : "Xóa môn học lỗi !!!");
                    frmMonHoc_Load(sender, e);
                }
            }
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            if(dgvMonHoc.CurrentRow == null)
            {
                MessageBoxEx.Show("Bạn phải chọn 1 môn học !!!");
            }
            else
            {
                incSizeHeight();
                btnThem.Enabled = false;
                btnThoat.Enabled = false;
                btnXoa.Enabled = false;
                btnSua.Enabled = false;
                txtTenMonHoc.Enabled = false;
                string tenMonHoc = dgvMonHoc.CurrentRow.Cells[0].Value.ToString();
                int soTrinh = Convert.ToInt32(dgvMonHoc.CurrentRow.Cells[1].Value.ToString());
                txtTenMonHoc.Text = tenMonHoc;
                btnOk.Hide();
                btnUpdate.Enabled = true;
                nudTrinh.Value = soTrinh;
            }
        }

        private void dgvMonHoc_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            string tenMonHoc = dgvMonHoc.CurrentRow.Cells[0].Value.ToString();
            int soTrinh = Convert.ToInt32(dgvMonHoc.CurrentRow.Cells[1].Value.ToString());
            int ky = Convert.ToInt32(dgvMonHoc.CurrentRow.Cells[2].Value.ToString());
            txtTenMonHoc.Text = tenMonHoc;
            nudTrinh.Value = soTrinh;
            cbxKy.SelectedValue = ky;
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            dgvMonHoc.Enabled = true;
            txtTenMonHoc.Text = "";
            txtTenMonHoc.Enabled = true;
            nudTrinh.Value = 2;
            descSizeHeight();
            btnThem.Enabled = true;
            btnThoat.Enabled = true;
            btnXoa.Enabled = true;
            btnSua.Enabled = true;
            btnOk.Show();
            btnUpdate.Enabled = true;
        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            string tenMonHoc = txtTenMonHoc.Text;
            int soTrinh = Convert.ToInt32(nudTrinh.Value);
            int ky = (int) cbxKy.SelectedValue;
            _monHoc = new BOMonHoc();
            int result = _monHoc.AddMonHoc(tenMonHoc, soTrinh, ky);
            MessageBoxEx.Show(result > 0 ? "Thêm mới thành công !!!" : "Thêm mới thất bại !!!");
            descSizeHeight();
            frmMonHoc_Load(sender, e);
            _log = new BOLog();
            _log.AddLog(Session.member.TenThanhVien, " thêm mới môn " + tenMonHoc, DateTime.Now, "");
            btnThem.Enabled = true;
            btnThoat.Enabled = true;
            btnXoa.Enabled = true;
            btnSua.Enabled = true;
            dgvMonHoc.Enabled = true;
        }

        private void btnUpdate_Click(object sender, EventArgs e)
        {
            string tenMonHoc = txtTenMonHoc.Text;
            int soTrinh = Convert.ToInt32(nudTrinh.Value);
            int ky = Convert.ToInt32(cbxKy.SelectedValue);
            _monHoc = new BOMonHoc();
            int result = _monHoc.UpdateMonHoc(tenMonHoc, soTrinh, ky);
            MessageBoxEx.Show(result > 0
                                  ? "Cập nhật thông tin môn học thành công !!!"
                                  : "Cập nhật thông tin môn học lỗi !!!");
            frmMonHoc_Load(sender, e);
            _log = new BOLog();
            _log.AddLog(Session.member.TenThanhVien, " sửa số trình môn " + tenMonHoc, DateTime.Now, "");
            descSizeHeight();
            btnThem.Enabled = true;
            btnThoat.Enabled = true;
            btnXoa.Enabled = true;
            btnSua.Enabled = true;
        }

        private void txtTenMonHoc_TextChanged(object sender, EventArgs e)
        {
            if (txtTenMonHoc.Text.Equals(""))
                btnOk.Enabled = false;
            else
                btnOk.Enabled = true;
        }

        private void frmMonHoc_FormClosing(object sender, FormClosingEventArgs e)
        {
            DialogResult dr;
            MessageBoxEx.EnableGlass = false;
            dr = MessageBoxEx.Show("Bạn có thật sự muốn thoát ?", "Thông báo", MessageBoxButtons.YesNo,
                                   MessageBoxIcon.Question);
            if (dr == DialogResult.No)
            {
                e.Cancel = true;
            }
        }
    }
}